//获取对象的最深层级

let obj = {
    // a: {
    //     name: '1'
    // },
    // b: {
    //     c: {
    //         d: 'd'
    //     }
    // },
    c: 1
}

function isObj(obj) {
    return typeof obj === 'object' && obj !== null
}

function getDep(obj) {
    let dep = 1
    let res = 1
    function depFn(objItem, dep) {
        if (!isObj(objItem)) return

        dep++
        res = Math.max(res, dep)
        // console.log(res)
        for (const key in objItem) {
            if (Object.hasOwnProperty.call(objItem, key)) {
                const element = objItem[key];
                if (isObj(element)) {
                    depFn(element, dep)
                }
            }
        }
    }
    depFn(obj, dep)
    return res
}

console.log(getDep(obj))
console.log(getLoopGetLevel(obj))


function getLoopGetLevel(obj) {

    var res = 1;
    loopGetLevel(obj)
    function loopGetLevel(obj, level) {
        var level = level ? level : 1;
        if (isObj(obj)) {
            for (var key in obj) {
                if (isObj(obj)) {
                    loopGetLevel(obj[key], level + 1);
                } else {
                    res = Math.max(level + 1, res);
                }
            }
        } else {
            res = Math.max(level, res);
        }
    }

    return res
}